package model

import "github.com/gogf/gf/v2/util/gmeta"

type CouponIdRes struct {
	Id string `json:"id"  dc:"优惠券id"`
}

type CouponIdReq struct {
	Id string `json:"id"  dc:"优惠券id"    v:"required#优惠券Id必填"`
}

type CouponRecordSearchListReq struct {
	Id         string `json:"id"  dc:"优惠券记录id" `
	CouponName string `json:"couponName" dc:"优惠券的名称" v:"length:1,20#优惠券名1~20字之间"`
	Username   string `json:"username"   dc:"用户名称"  v:"length:1,20#用户名称1~20字之间"`
	UserId     string `json:"userId"   dc:"用户Id"  `
	IsUse      int    `json:"isUse"   dc:" 1 已核销该优惠券  -1 未核销该优惠券" v:"in:-1,1#isUse请按照枚举类型查询"`
	*Paging
}

type CouponInfoRes struct {
	CouponName   string  `json:"couponName" dc:"优惠券的名称" v:"required|length:1,20#优惠券名称必填|优惠券名1~20字之间"`
	CouponType   int     `json:"couponType" dc:"优惠券的类型 1 赠送金额"  v:"required|in:0,1#优惠券类型必填|优惠券类型只能填写1"`
	CouponTime   int     `json:"couponTime" dc:"优惠券赠送的时间(分钟)" `
	CouponMoney  float64 `json:"couponMoney" dc:"优惠券赠送的金额(元,保留小数点两位)" v:"required-if:couponType,1|float#优惠券类型为1时赠送金额必填|赠送金额格式不正确"`
	CouponNumber int     `json:"couponNumber" dc:"优惠券的发放数量 -1 为无限"`
	CouponRule   int     `json:"couponRule" dc:"优惠券规则  满 rules 送 time"`
	CouponRemark string  `json:"couponRemark" dc:"优惠券备注" v:"length:1,25#备注1~25字之间"`
	CouponCode   string  `json:"couponCode"   dc:"优惠券的唯一别名,用户除id可以使用该值来兑换优惠券" v:"length:1,20#优惠券code1~20字之间"`
	TermValidity int     `json:"termValidity" dc:"有效期类型 1 固定时间 2. 领取后xx天过期  3 无期限" v:"required|in:1,2,3#有效期类型必填|有效期类型只能填写1,2,3"`
	StartTime    string  `json:"startTime" dc:"开始日期" v:"required-if:termValidity,1|datetime#有效期类型为1时开始时间必填|开始日期格式不正确"`
	EndTime      string  `json:"endTime" dc:"失效日期"   v:"required-if:termValidity,1|datetime#有效期类型为1时失效时间必填|失效日期格式不正确"`
	DayTime      int     `json:"dayTime" dc:"有效天数"  v:"required-if:termValidity,2#有效期类型为2时有效天数必填"`
	ReceiveNum   int     `json:"receiveNum" dc:"每个用户领取次数"  v:"between:1,10#用户领取次数在1~10之间"`
}

// CouponEditInfoRes 优惠券只能修改的参数
type CouponEditInfoRes struct {
	CouponNumber int    `json:"couponNumber" dc:"优惠券的发放数量 -1 为无限"`
	ReceiveNum   int    `json:"receiveNum" dc:"每个用户领取次数"  v:"between:1,10#用户领取次数在1~10之间"`
	CouponName   string `json:"couponName" dc:"优惠券的名称" v:"required|length:1,20#优惠券名称必填|优惠券名1~20字之间"`
	CouponRemark string `json:"couponRemark" dc:"优惠券备注" v:"length:1,25#备注1~25字之间"`
	CouponIdReq
}

type CouponInfoDBRes struct {
	gmeta.Meta `orm:"table:lot_coupon"`
	CouponInfoAndIdRes
}
type CouponInfoAndIdRes struct {
	CouponInfoRes
	CouponIdRes
}

// CouponListReq 管理员获取优惠券列表
type CouponListReq struct {
	CouponName   string `json:"couponName" dc:"优惠券的名称" v:"length:1,20#优惠券名1~20字之间"`
	TermValidity int    `json:"termValidity" dc:"有效期类型 1 固定时间 2. 领取后xx天过期  3 无期限" v:"in:1,2,3#有效期类型只能填写1,2,3"`
	CouponType   int    `json:"couponType" dc:"优惠券的类型 1 直接赠送时间 2 通过规则赠送时间" d:"1" v:"in:1#优惠券类型只能填写1"`
	*Paging
}

// CouponSearchUserList 用户获取优惠券列表条件
type CouponSearchUserList struct {
	CouponName string `json:"couponName" dc:"优惠券的名称" v:"length:1,20#优惠券名1~20字之间"`
	UseStatus  int    `json:"useStatus" dc:"使用状态 1 已使用 2 未使用"  v:"in:1,2#状态必需按照枚举进行填写"`
	*Paging
}

type ReceiveExchangeReq struct {
	CouponCode string `json:"couponCode"   dc:"该值可以创兑换券id或者code" v:"required|length:1,25#优惠券code必填|优惠券code1~25字之间"`
}

type CouponIdAndInfoRes struct {
	*CouponInfoRes
	*CouponIdRes
	CreatedAt string `json:"createdAt"  dc:"创建时间" `
	UseNum    int    `json:"useNum"  dc:"使用张数/不需要填写"`
}

type CouponListPageRes struct {
	List []*CouponIdAndInfoRes `json:"list"  dc:"优惠券列表"`
	PutPage
}

type UserCouponListPageRes struct {
	List []*CouponIdAndInfoRes `json:"list"  dc:"优惠券列表"`
	PutPage
}
